作者:默默-晶f | 来源:互联网 | 2023-09-16 17:01
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android自动创建最小宽度限定符文件插件AutoDimens相关的知识,希望对你有一定的参考价值。本文主要涉及以
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Android 自动创建最小宽度限定符文件插件 AutoDimens相关的知识,希望对你有一定的参考价值。
本文主要涉及以下几篇文章
Android 屏幕适配总结
Android ConstraintLayout 使用与适配(使用篇)
Android ConstraintLayout 使用与适配(适配篇)
说明:本插件基于 ScreenMatch 的源码修改,十分感谢 ScreenMatch 作者,使本插件减少很多工作量。之所以重复造轮子,有以下三个原因:
1.想自己学习写一个插件
2.本插件主要针对 ConstraintLayout + SP 适配的方式,针对 ConstraintLayout 无法适配字体,使用最小宽度限定符的方式适配工程中的字体。使用 ConstraintLayout 适配的方式见:Android ConstraintLayout 使用与适配(适配篇)
3.指明 ScreenMatch 中的一个问题,ScreenMatch 不会创建指定的 base_dp 值的dimens.xml文件,如他设置的最小宽度基准值是 360,但是并没有创建 values-sw360dp 的文件夹,这是不对的,如果认为默认文件values是360dp的最小宽度值也是错误的,因为默认文件夹是320X640 dpi160的屏幕,因此默认最小宽度值是320dp。这一点可以用事实证明,使用如下方式证明:
1.将屏幕宽320分成3个View,第一个View宽10dp,第二个View宽300dp,第三个View宽10dp,如果默认屏幕宽是320dp,那运行此布局肯定能看到第三个View,并且第三个View与第一个View显示大小一致。
2.将屏幕高480分成3个View,第一个View高10dp,第二个View高460dp,第三个View高10dp,如果默认屏幕高是480dp,那运行此布局肯定能看到第三个View,并且第三个View与第一个View显示大小一致。
测试布局代码如下:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"
xmlns:app&#61;"http://schemas.android.com/apk/res-auto"
android:layout_width&#61;"match_parent"
android:layout_height&#61;"match_parent">
android:id&#61;"&#64;&#43;id/view1"
android:layout_width&#61;"10dp"
android:layout_height&#61;"30dp"
android:layout_marginTop&#61;"30dp"
android:background&#61;"&#64;color/colorAuto"
app:layout_constraintStart_toStartOf&#61;"parent"
app:layout_constraintTop_toTopOf&#61;"parent" />
android:id&#61;"&#64;&#43;id/view2"
android:layout_width&#61;"300dp"
android:layout_height&#61;"30dp"
android:background&#61;"&#64;color/colorAccent"
app:layout_constraintBottom_toBottomOf&#61;"&#64;&#43;id/view1"
app:layout_constraintStart_toEndOf&#61;"&#64;&#43;id/view1"
app:layout_constraintTop_toTopOf&#61;"&#64;&#43;id/view1" />
android:id&#61;"&#64;&#43;id/view3"
android:layout_width&#61;"10dp"
android:layout_height&#61;"30dp"
android:background&#61;"&#64;color/colorBlack"
app:layout_constraintBottom_toBottomOf&#61;"&#64;&#43;id/view1"
app:layout_constraintStart_toEndOf&#61;"&#64;&#43;id/view2"
app:layout_constraintTop_toTopOf&#61;"&#64;&#43;id/view1" />
android:id&#61;"&#64;&#43;id/view4"
android:layout_width&#61;"30dp"
android:layout_height&#61;"10dp"
android:layout_marginLeft&#61;"30dp"
android:background&#61;"&#64;color/colorAuto"
app:layout_constraintStart_toStartOf&#61;"parent"
app:layout_constraintTop_toTopOf&#61;"parent" />
android:id&#61;"&#64;&#43;id/view5"
android:layout_width&#61;"30dp"
android:layout_height&#61;"460dp"
android:background&#61;"&#64;color/colorParent"
app:layout_constraintEnd_toEndOf&#61;"&#64;&#43;id/view4"
app:layout_constraintStart_toStartOf&#61;"&#64;&#43;id/view4"
app:layout_constraintTop_toBottomOf&#61;"&#64;&#43;id/view4" />
android:id&#61;"&#64;&#43;id/view9"
android:layout_width&#61;"30dp"
android:layout_height&#61;"10dp"
android:background&#61;"&#64;color/colorBlack"
app:layout_constraintEnd_toEndOf&#61;"&#64;&#43;id/view5"
app:layout_constraintStart_toStartOf&#61;"&#64;&#43;id/view5"
app:layout_constraintTop_toBottomOf&#61;"&#64;&#43;id/view5" />
使用 Genymontion 创建一个 320X480 的屏幕&#xff0c;并设置dpi为160&#xff0c;运行结果如下
一、安装
Android Studio 选择 File —— Settings —— Plugins 在 Marketplace 中搜索 AutoDimens
二、使用
1.在项目区域点击右键选择 AutoDimens 或使用快捷方式Ctrl&#43;Alt&#43;I。
2.选择要适配的 Module 名称
3.创建成功提示 Ok, create dimens file successfully!
创建成功后会在选择的 Module 下创建相应的最小宽度限定符文件夹与 dimens.xml 文件&#xff0c;如下
创建成功后还会在项目根目录中创建 autoDimension.properties 配置文件&#xff0c;如下
三、autoDimension.properties 配置文件说明
#指定最小宽度基准值&#xff0c;应该使用设计图尺寸的宽&#xff0c;默认最小宽度基准值为 360
baseSW&#61;
#按最小宽度限定符适配的方式&#xff0c;添加最小宽度值&#xff0c;多个值使用英文逗号(,)分割 如 360,420,450
#目前默认包含的最小宽度值为&#xff1a;384,392,400,410,411,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365
#如果不需要某个最小宽度值&#xff0c;可在 ignoreSize 参数后指明
#将按指定的 XXX 值创建相应的 values-swXXXdp 文件夹与 dimens.xml 文件
matchSW&#61;
#取消默认包含的最小宽度值&#xff0c;多个值使用英文逗号(,)分割 如 384,392,400
#目前默认包含最小屏幕尺寸值为&#xff1a;384,392,400,410,411,480,533,592,600,640,662,720,768,800,811,820,960,961,1024,1280,1365
#指定后将不会创建相应默认值中的 values-swXXXdp 文件夹与 dimens.xml 文件
ignoreSW&#61;
#指定默认的 module 名&#xff0c;如果设置指定的 module 名称后,
#将直接创建指定的最小宽度文件夹与相应 dimens.xml 文件并刷新工程&#xff0c;不会有任何提示
designateModule&#61;
#是否直接创建带默认值的 dimens.xml 文件&#xff0c;
#如果为 true 则在指定的各最小宽度限定符文件夹中直接创建 dimens.xml 文件&#xff0c;
#并且每个 dimens.xml 文件中默认包含 1sp - 100sp 的 dimen 值
isUseDefaultDimension&#61;false
四、使用建议
不建议使用懒人方式直接创建所有包含默认值的文件 dimens.xml&#xff0c;应该在默认 values 中的 dimens.xml 写明自己用到的值&#xff0c;项目写完后再使用适配工具创建所有最小宽度限定符文件。原因是减少无用代码&#xff0c;毕竟少一个值就相当于少指定最小宽度N乘1个值。